let numbers = [10, 9, 11, 2, 89, 66, 54, 67, 23];
console.log(numbers.length);

/**
 * 用来完成比较操作的函数
 * @param {*} a 第一个参与比较的数值
 * @param {*} b 第二个参与比较的数值
 * @returns 当第一个参数值大于第二个参数值时返回大于零的数字;
 *          当第一个参数值等于第二个参数值时返回零;
 *          当第一个参数值小于第二个参数值时返回小于零的数字;
 */
let compareFunction = function(a, b) {
    if (a > b) {
        return 1; // 大于零的数字
    } else if (a === b) {
        return 0;
    } else {
        return -1; // 小于零的数字
    }
}

console.log(numbers.toString());
/*
// 使用冒泡排序
for( let i = 0 ; i < numbers.length - 1 ; i++ ){
    for( let j = 0 ; j < numbers.length - 1 - i ; j++ ){
        // 使用专门用来比较两个数值大小的函数来完成比较
        let r = compareFunction( numbers[ j ] , numbers[ j + 1 ] ) ;
        // 根据比较结果来确定是否进行交换操作
        if( r > 0 ){
            numbers[ j ] ^= numbers[ j + 1 ];
            numbers[ j+1 ] ^= numbers[ j ]
            numbers[ j ] ^= numbers[ j + 1 ]
        }
    }
}
*/

numbers.sort(compareFunction);

console.log(numbers.toString());

let students = [
    { id: 1, name: '张三丰', age: 108, score: 99 },
    { id: 2, name: '张翠山', age: 32, score: 100 },
    { id: 3, name: '殷素素', age: 30, score: 90 },
    { id: 4, name: '张无忌', age: 9, score: 100 }
];

let comparator = function(a, b) {
    /*
    if( a.age > b.age ){
        return 1 ;
    } else if ( a.age === b.age ) {
        return 0 ;
    } else {
        return -1 ;
    }*/
    return a.age - b.age;
}

console.log(students);

students.sort(comparator);

console.log(students);

// 问题:
// 如何通过 Array.prototype.sort 函数 来扰动一个数组，让数组变得杂乱无序？？？